﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DrivingCRM.Model;

namespace DrivingCRM.Views.Private.CRM
{
    public partial class ManageAdresses : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        /// <summary>
        /// Méthode déclenché au clic sur le bouton d'ajout d'une adresse
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void B_AddAddress_Click(object sender, EventArgs e)
        {
            /// affichage du template d'insertion d'une adresse en première position de la listView
            LV_Addresses.InsertItemPosition = InsertItemPosition.FirstItem;
        }

        /// <summary>
        /// Méthode déclenché au clic sur le bouton d'annulation d'ajout d'une adresse
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void LV_Adresses_ItemCanceling(object sender, ListViewCancelEventArgs e)
        {
            /// si l'annulation a été déclenchée pendant l'insertion
            if (e.CancelMode == ListViewCancelMode.CancelingInsert)
            {
                /// le formulaire d'ajout est alors caché
                LV_Addresses.InsertItemPosition = InsertItemPosition.None;
            }
        }

        /// <summary>
        /// Méthode déclenchée à l'ajout d'une adresse
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void LV_Adresses_ItemInserting(object sender, ListViewInsertEventArgs e)
        {
            /// ajout de la valeur de la combobox du streettype à l'adresse en cours d'insertion
            e.Values["StreetTypeId"] = int.Parse(((DropDownList)LV_Addresses.InsertItem.FindControl("DDL_StreetType")).SelectedValue);

            e.Values["CompleteAddress"] = e.Values["Number"].ToString() + " " + ((DropDownList)LV_Addresses.InsertItem.FindControl("DDL_StreetType")).SelectedItem.Text + " " + e.Values["StreetName"].ToString();

            if (e.Values["Extra"] != null && e.Values["Extra"].ToString() != string.Empty)
                e.Values["CompleteAddress"] = e.Values["CompleteAddress"].ToString() + " " + e.Values["Extra"].ToString();

            e.Values["CompleteAddress"] = e.Values["CompleteAddress"].ToString() + " " + e.Values["Zipcode"].ToString() + " " + e.Values["City"].ToString();

            if (e.Values["Cedex"] != null && e.Values["Cedex"].ToString() != string.Empty)
                e.Values["CompleteAddress"] = e.Values["CompleteAddress"].ToString() + " Cédex " + e.Values["Cedex"].ToString();
        }

        /// <summary>
        /// Méthode déclenchée à la demande modification d'une adresse
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void LV_Adresses_ItemEditing(object sender, ListViewEditEventArgs e)
        {
            int index = e.NewEditIndex;
            ListViewDataItem ctrl = LV_Addresses.Items[e.NewEditIndex];///.FindControl("DDL_StreetType");
            //((DropDownList)LV_Addresses.Items[e.NewEditIndex].FindControl("DDL_StreetType")).SelectedValue = ((Address)LV_Addresses.Items[e.NewEditIndex].DataItem).StreetType;
        }

        /// <summary>
        /// Méthode déclenchée à la mise à jour d'une adresse
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void LV_AdressesItemUpdating(object sender, ListViewUpdateEventArgs e)
        {
            /// ajout de la valeur de la combobox du streettype à l'adresse en cours modification
            e.NewValues["StreetTypeId"] = int.Parse(((DropDownList)LV_Addresses.EditItem.FindControl("DDL_StreetType")).SelectedValue);

            /// gestion du champ CompletAddress (pour affichage)
            e.NewValues["CompleteAddress"] = e.NewValues["Number"].ToString() + " " + ((DropDownList)LV_Addresses.EditItem.FindControl("DDL_StreetType")).SelectedItem.Text + " " + e.NewValues["StreetName"].ToString();

            if (e.NewValues["Extra"] != null && e.NewValues["Extra"].ToString() != string.Empty)
                e.NewValues["CompleteAddress"] = e.NewValues["CompleteAddress"].ToString() + " " + e.NewValues["Extra"].ToString();

            e.NewValues["CompleteAddress"] = e.NewValues["CompleteAddress"].ToString() + " " + e.NewValues["Zipcode"].ToString() + " " + e.NewValues["City"].ToString();

            if(e.NewValues["Cedex"] != null && e.NewValues["Cedex"].ToString() != string.Empty)
                e.NewValues["CompleteAddress"] = e.NewValues["CompleteAddress"].ToString() + " Cédex " + e.NewValues["Cedex"].ToString();
        }
    }
}